const { getToken } = require("../utils/token");
const {getUser , addData, updateData , delData} = require('../model/users');

// 写路由函数的  会有很多  导出的时候也要多文件导出   --- 

module.exports.loginHandler = async (req , res) => {
    const {username , password} = req.body ;
    // 查询这个人是否是否存在
    const result = await getUser({username}) ;
    console.log(result);  

    const {code , data} = result ;
    if(code === 0) {
        return res.send({code : 0 , msg : '数据库错误'});
    }
    if(data) {
        // 判断密码是否正确
        if(data.password === password) {

            // 生成token  
            const info = {id : data.id , username} ;
            const token = getToken(info) ;
            res.send({code: 1 , msg : '登陆成功' , token , id : data.id} ) ;
        } else {
            res.send({code: 0 , msg : '用户名或者密码错误'}) ;
        }
    } else {
        res.send({code: 0 , msg : '用户名不存在'}) ;
    }
    
}


// 修改密码的逻辑
//    判断旧密码是否正确   ----拿id(或者用户名)和旧密码一起去数据库查询
//    匹配成功才可以修改


exports.rpwdHandler = async (req , res) => {
    const {id , password , newPwd} = req.body ;
    console.log(req.body);
    // 先判断id和密码是否匹配   去查询数据库
    const result = await getUser({_id : id , password})  ;

    if(result.code === 0) {
        return res.send({code : 0 , msg : '数据库错误'});
    }
    if(!result.data) {
        return res.send({code : 0 , msg : '旧密码错误'});
    }
    // 修改密码
    const result2 = await updateData({_id : id , password} , {password : newPwd}) ;
    if(result2.code === 0) {
        return res.send({code : 0 , msg : '数据库错误'});
    }
   
    return res.send({code : 0 , msg : '修改密码成功'});    
}



exports.regHandler = async (req , res) => {
    const {username , password} = req.body ;
    // 判断用户名是否已被注册
    const result = await getUser({username}) ;
    const {code , data} = result ;
    if(code === 0) {
        return res.send({code : 0 , msg : '数据库错误'});
    }

    // 如果data值不是null
    if(data) {
        return res.send({code : 0 , msg : '用户名已被注册'});
    } 

    // 可以注册
    // const results = await addData({username , password}) ;
    // if(results.code === 0) {
    //     return res.send({code : 0 , msg : '数据库错误'});
    // }
    // res.send({code : 1 , msg : '注册成功'});

    addData({username , password}).then(data => {
        if(code === 0) {
            return res.send({code : 0 , msg : '数据库错误'});
        }
        res.send({code : 1 , msg : '注册成功'});
    })
}



// 根据id删除
exports.ZhuXiaoHandler = async (req , res) => {
    // 查询id是否存在
    const {id} = req.body ;

    const result = await getUser({_id:id}) ;
    if(result.code === 0) {
        return res.send({code : 0 , msg : '数据库错误'});
    }
    if(!result.data) {
        return res.send({code : 0 , msg : '用户不存在'});
    }

    // 去删除账号
    const result2 = await delData({_id : id}) ;
    if(result2.code === 0) {
        return res.send({code : 0 , msg : '数据库错误'});
    }
    res.send({code : 1 , msg : '删除成功'});
}